﻿using AccesoData;
using Entidades;
using NUnit.Framework;

namespace Pruebas.PruebasDao
{
    [TestFixture]
    class PruebaDaoRamo
    {
        [TestCase]
        public void PruebaAgregarRamo()
        {
            Ramo miRamo = FabricaEntidades.ObtenerRamo();

            miRamo.Nombre = "pruebaRamo";
            miRamo.Tipo = "ramo";

            miRamo.Id = DAO.ObtenerFabrica(1).ObtenerDaoRamo().AgregarRamo(miRamo);

            Assert.AreNotEqual(-1,miRamo.Id);
        }

        [TestCase]
        public void PruebaAgregarTipoRamo()
        {
            Ramo miRamo = FabricaEntidades.ObtenerRamo();
            Ramo miTipo = FabricaEntidades.ObtenerRamo();

            miRamo.Nombre = "Ramo";
            miRamo.Tipo = "ramo";

            miRamo.Id = DAO.ObtenerFabrica(1).ObtenerDaoRamo().AgregarRamo(miRamo);

            miTipo.Nombre = "Tipo";
            miTipo.Tipo = "tipo";

            miTipo.Id = DAO.ObtenerFabrica(1).ObtenerDaoRamo().AgregarRamo(miTipo);

            int id = DAO.ObtenerFabrica(1).ObtenerDaoRamo().AgregarTipoRamo(miRamo, miTipo);

            Assert.AreNotEqual(-1,id);

        }

        [TestCase]
        public void PruebaObtenerTiposRamo()
        {
            Ramo miRamo = FabricaEntidades.ObtenerRamo();
            Ramo miTipo = FabricaEntidades.ObtenerRamo();

            miRamo.Nombre = "Ramo1";
            miRamo.Tipo = "ramo";

            miRamo.Id = DAO.ObtenerFabrica(1).ObtenerDaoRamo().AgregarRamo(miRamo);

            miTipo.Nombre = "Tipo1";
            miTipo.Tipo = "tipo";

            miTipo.Id = DAO.ObtenerFabrica(1).ObtenerDaoRamo().AgregarRamo(miTipo);

            miTipo.RamoTipo.Id = DAO.ObtenerFabrica(1).ObtenerDaoRamo().AgregarTipoRamo(miRamo, miTipo);

            miRamo.Tipos = DAO.ObtenerFabrica(1).ObtenerDaoRamo().ObtenerTiposRamo(miRamo);

            Assert.IsNotNull(DAO.ObtenerFabrica(1).ObtenerDaoRamo().ObtenerTiposRamo(miRamo));
            Assert.IsNotEmpty(miRamo.Tipos);
            Assert.AreEqual(miTipo.RamoTipo.Id, miRamo.Tipos[0].RamoTipo.Id);
        }

        [TestCase]
        public void PruebaObtenerRamoNombre()
        {
            Ramo miRamo = FabricaEntidades.ObtenerRamo();
            
            miRamo.Nombre = "Ramo1";
            miRamo.Tipo = "ramo";
            miRamo.Id = DAO.ObtenerFabrica(1).ObtenerDaoRamo().AgregarRamo(miRamo);

            Ramo prueba = DAO.ObtenerFabrica(1).ObtenerDaoRamo().ObtenerRamo(miRamo.Nombre);

            Assert.IsNotNull(prueba);
            Assert.AreEqual(miRamo.Id,prueba.Id);
            Assert.AreEqual(miRamo.Tipo,prueba.Tipo);

        }
    }
}
